Object-oriented development tools commonly include tools which build core portions of programming applications. Typically, a builder tool has a user interface that collects a certain amount of input from the developer for which it creates some skeleton code. This input is metadata. More generally, metadata is self-descriptive information that can describe both services and information. Typically, the generated code does not make up the entire application; thus the user/developer must extend the generated code by using a source editor. An example of such an extension is business logic that computes the salary of an employee. Having prepared the code extensions, the developer will build, that is, compile and link the application using the traditional compiler.
One problem with the traditional method is that when the metadata is changed, the user must re-generate the code. Re-generation will overwrite such code extensions, and thus the extensions need to be re-entered at each code re-generation, either by manual re-input or by cutting and pasting from another file; otherwise the editor will simply enter a null and the previously entered code extensions will be lost.
An additional problem is that traditional builders generate language-specific code. For example, one form of application wizard generates only C++ code, and thus the generated code can be used only by a C++ compiler.
Accordingly, it is an object of the present invention to provide a system that enables the persistent storage and recovery of all such edited code. It is a further object of the present invention to provide a system that enables the storage of such code extensions in a way that is independent of the language in which those code extensions are written. It is a further object of the present invention to provide a mechanism for storing edited code as metadata in support of the development of complex applications using a layered data model for the handling and storage of application development metadata. A general form of such a data model is described in Canadian Patent Application No. 2,201,278, (CA9-97-003), "Hierarchical Metadata Store for an Integrated Development Environment", filed on Mar. 27, 1997.